+2008-10-18 Tor Lillqvist <tml@novell.com>
+
+ * gdk/win32/gdkevents-win32.c (gdk_event_translate): On
+ WM_WINDOWPOSCHANGING, don't dereference windowpos in the debugging
+ output without setting it first.
+
+2008-10-18 Tor Lillqvist <tml@novell.com>
+
+ Bug 556578 - GIMP windows stay on top of other windows
+
+ * gdk/win32/gdkevents-win32.c (ensure_stacking_on_unminimize)
+ (ensure_stacking_on_window_pos_changing)
+ (ensure_stacking_on_activate_app): Ignore unmapped windows in the
+ loops where we look for the lowest "transient-type" window.
+
+ (gdk_event_translate): Don't call
+ ensure_stacking_on_window_pos_changing() or
+ ensure_stacking_on_activate_app() for unmapped windows.
+
2008-10-16 Marek Kasik <mkasik@redhat.com>
Bug 556527 - The current page property is not passed to
GdkWindowImplWin32 *rover_impl =
(GdkWindowImplWin32 *)((GdkWindowObject *)rover_gdkw)->impl;
- if (rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_UTILITY ||
- rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_DIALOG ||
- rover_impl->transient_owner != NULL)
+ if (GDK_WINDOW_IS_MAPPED (rover_gdkw) &&
+ (rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_UTILITY ||
+ rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_DIALOG ||
+ rover_impl->transient_owner != NULL))
{
lowest_transient = rover;
}
GdkWindowImplWin32 *rover_impl =
(GdkWindowImplWin32 *)((GdkWindowObject *)rover_gdkw)->impl;
- if (rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_UTILITY ||
- rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_DIALOG ||
- rover_impl->transient_owner != NULL)
+ if (GDK_WINDOW_IS_MAPPED (rover_gdkw) &&
+ (rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_UTILITY ||
+ rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_DIALOG ||
+ rover_impl->transient_owner != NULL))
{
restacking = TRUE;
windowpos->hwndInsertAfter = rover;
GdkWindowImplWin32 *rover_impl =
(GdkWindowImplWin32 *)((GdkWindowObject *)rover_gdkw)->impl;
- if (rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_UTILITY ||
- rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_DIALOG ||
- rover_impl->transient_owner != NULL)
+ if (GDK_WINDOW_IS_MAPPED (rover_gdkw) &&
+ (rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_UTILITY ||
+ rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_DIALOG ||
+ rover_impl->transient_owner != NULL))
{
GDK_NOTE (EVENTS, g_print (" restacking: %p", rover));
SetWindowPos (msg->hwnd, rover, 0, 0, 0, 0,
break;
case WM_WINDOWPOSCHANGING:
- GDK_NOTE (EVENTS, g_print (" %s %s %dx%d@%+d%+d now below %p",
- _gdk_win32_window_pos_bits_to_string (windowpos->flags),
- (windowpos->hwndInsertAfter == HWND_BOTTOM ? "BOTTOM" :
- (windowpos->hwndInsertAfter == HWND_NOTOPMOST ? "NOTOPMOST" :
- (windowpos->hwndInsertAfter == HWND_TOP ? "TOP" :
- (windowpos->hwndInsertAfter == HWND_TOPMOST ? "TOPMOST" :
- (sprintf (buf, "%p", windowpos->hwndInsertAfter),
- buf))))),
- windowpos->cx, windowpos->cy, windowpos->x, windowpos->y,
- GetNextWindow (msg->hwnd, GW_HWNDPREV)));
-
- return_val = ensure_stacking_on_window_pos_changing (msg, window);
+ GDK_NOTE (EVENTS, (windowpos = (WINDOWPOS *) msg->lParam,
+ g_print (" %s %s %dx%d@%+d%+d now below %p",
+ _gdk_win32_window_pos_bits_to_string (windowpos->flags),
+ (windowpos->hwndInsertAfter == HWND_BOTTOM ? "BOTTOM" :
+ (windowpos->hwndInsertAfter == HWND_NOTOPMOST ? "NOTOPMOST" :
+ (windowpos->hwndInsertAfter == HWND_TOP ? "TOP" :
+ (windowpos->hwndInsertAfter == HWND_TOPMOST ? "TOPMOST" :
+ (sprintf (buf, "%p", windowpos->hwndInsertAfter),
+ buf))))),
+ windowpos->cx, windowpos->cy, windowpos->x, windowpos->y,
+ GetNextWindow (msg->hwnd, GW_HWNDPREV))));
+
+ if (GDK_WINDOW_IS_MAPPED (window))
+ return_val = ensure_stacking_on_window_pos_changing (msg, window);
break;
case WM_WINDOWPOSCHANGED:
msg->wParam ? "YES" : "NO",
(gint64) msg->lParam));
- ensure_stacking_on_activate_app (msg, window);
+ if (GDK_WINDOW_IS_MAPPED (window))
+ ensure_stacking_on_activate_app (msg, window);
break;
/* Handle WINTAB events here, as we know that gdkinput.c will